/*******************************************************************************
*
*	HDDTest the graphical drive benchmarking tool.
*	Copyright (C) 2011  Vladimír Matěna <vlada.matena@gmail.com>
*
*	This program is free software: you can redistribute it and/or modify
*	it under the terms of the GNU General Public License as published by
*	the Free Software Foundation, either version 3 of the License, or
*	(at your option) any later version.
*
*	This program is distributed in the hope that it will be useful,
*	but WITHOUT ANY WARRANTY; without even the implied warranty of
*	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*	GNU General Public License for more details.
*
*	You should have received a copy of the GNU General Public License
*	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
********************************************************************************/

#ifndef TIMER_H
#define TIMER_H

#include <sys/time.h>

#include "definitions.h"

using namespace HDDTest;

/// Class implementing software stopwatch
/** The Timer class works like stopwatch.
  The start and stop position can be marked. **/
class Timer
{
public:
	Timer();	/// The Timer constuctor

	void MarkStart();	/// Marks start time
	void MarkEnd();		/// Marks end time

	/** Gets time difference between start and stop time
	  @return the difference is returned as hddtime
	  @see definitions.h for time constants **/
	hddtime GetFinalOffset();

	/** Sets time difference between start and current time
	  @return the difference is returned as hddtime
	  @see definitions.h for time constants **/
	hddtime GetCurrentOffset();

private:
	timeval start;
	timeval end;
};

#endif // TIMER_H
